package com.Algorithm.HUAWEI.two20220303;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/03/21/15:47
 * @Description:
 * @Target:
 */
public class 蛇形矩阵 {
    /*
    *
    * 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

        例如，当输入5时，应该输出的三角形为：

        1 3 6 10 15

        2 5 9 14

        4 8 13

        7 12

        11


        输入描述：
        输入正整数N（N不大于100）

        输出描述：
        输出一个N行的蛇形矩阵。
        *
        * 输入：
        4
        复制
        输出：
        1 3 6 10
        2 5 9
        4 8
        7

示例1*/


    // 下面每次增加1--- 0 1 2 3 4  5  6  7  -- 基于上一个的增加，不是基于第一个增加。
    //               1 2 4 7 11 16 22 29

    /*
    *   1 3 6 10 15

        2 5 9 14 0

        4 8 13 0 0

        7 12 0 0 0

        11 0 0 0 0
    *
    *
    *
    *
    *
    * */



    // 下面一行比上面一行的斜方向小1，第一行是等差数列，+2 +3 +4 +5 +6....
    // 1 3 6 10 15
    // 5 4 3 2 1

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.valueOf(in.readLine());
        int[][] ints = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n-i; j++) {
                if (i==0){
                    ints[i][j] = j==0?1:ints[i][j]+ints[i][j-1]+j+1;
                }else{
                    ints[i][j] = ints[i-1][j+1]-1;
                }
                System.out.print(ints[i][j]+" ");
            }
            System.out.println();
        }

/*        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(ints[i][j]+" ");
            }
            System.out.println();
        }*/
    }
}
